home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0257
/
doc.exe
/
EXEC.DOC
< prev
next >
Wrap
Text File
|
1992-02-13
|
6KB
|
130 lines
─────────────────────────────────────────────────────────────────────────────
Dokumentation zur Datei: EXEC.INC
─────────────────────────────────────────────────────────────────────────────
EXEC.INC - Routinen zur Ausführung von Programmen
(für den Assembler A86)
(c) Bernd Schemmer 1990 - 1992
Letzter Update: 12.02.1992
Hinweis: Die Routinen benötigen Routinen aus den folgenden .LIB-Dateien:
FILES.LIB, DIRS.LIB, ENV.LIB und STRINGS.LIB
■ Variablen:
------------
PathVar - String (max. Länge: 64 Byte), enthält den
Namen der Environment-Variable mit dem
Pfaden für die Suche nach Dateien durch
SearchFile.
Voreingestellter Inhalt ist 'PATH'
■ Routinen:
-----------
ExecProgramm - Ausführen eines Programmes
SearchFile - Sucht eine Datei
----------------------------
ExecProgramm
Funktion: Ausführen eines Programmes
Eingabe: DS:SI -> Programm-Name als String
Hinter dem Programm-Namen muß noch ein Byte
frei sein!
DS:BX -> Parameter für das Programm
Hinter dem Parametern muß noch ein Byte frei
sein!
Ausgabe: CF = 0 ->> okay
AL = Errorlevel des Programm
AH = Returncode des Programms
0 = Programm endete normal
1 = Programm endete durch CTRL-C
2 = Programm endete durch schweren Fehler
(über den Interrupt 24h)
3 = Programm endete normal aber ohne den
belegten Speicher freizugeben (TSR)
CF = 1 ->> Fehler
AX = DOS-Fehlernummer
Bes.: VOR dem Aufruf dieser Routine muß unbedingt freier Speicher
bereitgestellt werden!
Ausgeführt werden können alle .EXE und .COM-Programme.
Da die Routine das Environment-Segment aus dem PSP benutzt,
darf das Programm-Environment noch nicht freigegeben worden
sein.
Die Routine benutzen ebenfalls die beiden FCBs aus dem PSP.
Batch-Dateien und interne DOS-Befehle müssen explizit über
den Aufruf des Kommando-Interpreters mit den Parameter '/C'
ausgeführt werden.
■ Aufbau des Blocks für die Funktion 4Bh
ProgrammBlock STRUC [BX]
_ProgEnv dw ? ; Segment des Environments
_ProgParm dw ?,? ; Adresse der Parameter
_ProgFCB1 dw ?,? ; Adresse des Defaults für den 1. FCB
_ProgFCB2 dw ?,? ; Adresse des Defaults für den 2. FCB
ENDS
----------------------------
SearchFile
Funktion: Ermittelt, ob eine Datei im akt. Directory oder in
einem der in der Environment-Variable, deren Name
in der Variablen Path gespeichert ist, gespeicherten
Pfade vorhanden ist
Eingabe: DS:SI -> Name der Datei
Der String muß Platz für mindestens 128 Zeichen
haben.
Ausgabe: CF = 0 ->> okay
Datei gefunden, Name bei DS:SI um den
Pfad erweitert.
CF = 1 ->> Fehler
AX = DOS-Fehlernummer
(2 oder 3 falls Datei bzw. Pfad nicht gefunden
wurde)
Bes.: Die Routine benötigt mehrere Routinen aus den .LIB-Dateien
Es sollten noch ca. 1500 Byte auf dem Stack frei sein!
(für die lokalen Variablen von SearchFile, SearchEnvStr
und ExistFile)
Die Routine benutzt indirekt (über ExistFile) die
undokumentierte Funktion 60h des Interrupt 21h!
Gesucht wird nach folgendem Algorithmus:
1. Falls der angegebene Name mit einem Pfad-Separator ('\')
oder ('/') beginnt oder der erste Teil des Namens ein
Laufwerkbezeichner ist, wird der angegebene Pfad
erweitert und die Datei NUR dort gesucht.
2. Andernfalls wird die Datei zuerst im akt. Directory
gesucht.
3. Wird die Datei im akt. Directory nicht gefunden, so
geht die Routine alle Pfade aus der Envrionment-Variable,
deren Name in der Variablen PATHVAR gespeichert ist, der
Reihe nach durch.
(d.h. auch eine Angabe wie z.B. 'TEST\TEST.DAT' wird in
ALLEN Pfaden gesucht)
Für die Suche wird der Inhalt der Environment-Variable deren
Name in der Variable PATHVAR steht benutzt.
Durch Ändern dieses Namens kann auch eine andere Environment-
Variable für die Suche benutzt werden (z.B. APPEND).
Der Aufbau dieser muß aber dem Aufbau des Inhaltes von PATH
entsprechen.
Der Inhalt der Variablen wird aus dem aktuellen Environment
ermittelt.